﻿using System;
using System.Collections.Generic;

namespace VisualTrain
{
	// Класс студента (Информация о студенте, предметах, которые идут у него и лабораторных по ним
	public class Student
	{
		private static string ID_stud;				// Идентификатор студента
		private static string name;					// Имя студента
		private static string fam;					// Фамилия студента
		private static string fat;					// Отчество студента
		private static List<Course> Courses;		// Список предметов
		private static string ID_group;				// Идентификатор группы
		private static string Curent_semestr;		// Текущий семестр
		private static int selectCourse;			// Номер выбранного предмета

		// Студент с заданным ID
		public Student(string id)
		{
			Courses = new List<VisualTrain.Course> ();
			Courses.Clear ();								// Очищаем список
			ID_stud = id;									// Указываем ID студента

			// Заполняем данные о студенте
			name = DataBase.GetString (String.Format ("SELECT * FROM [Student] WHERE [ID]='{0}'", id), "Name");		// Получаем имя студента
			fam = DataBase.GetString (String.Format ("SELECT * FROM [Student] WHERE [ID]='{0}'", id), "Fam");		// Получаем фамилию студента
			fat = DataBase.GetString (String.Format ("SELECT * FROM [Student] WHERE [ID]='{0}'", id), "Fat");		// Получаем отчество студента

			// Получение ID группы студента
			ID_group = DataBase.GetString (String.Format ("SELECT * FROM [Student] WHERE [ID]='{0}'", id), "Group");

			// Получаем текущий семестр
			Curent_semestr = DataBase.GetString (String.Format ("SELECT * FROM [Groups] WHERE [ID]='{0}'", ID_group), "Sem");

			Course ( Curent_semestr );			// Заполняем текущие предметы
		}

		// Получаем все дисциплины для студента по семестру
		private void Course(string sem)
		{
			// Заполняем список предметов по семестру
			List<string> course = DataBase.GetData ( String.Format ("SELECT * FROM [PrepDis] WHERE [Group]='{0}' AND [Sem]='{1}'", ID_group, sem), "Dis" );

			for ( int i = 0; i < course.Count; ++i )
			{
				// Добавляем предмет в список
				Courses.Add ( new VisualTrain.Course (course [i]) );
			}
		}

		// ФИО студента
		public static string FIO
		{
			get
			{
				return fam + " " + name + " " + fat;
			}
		}

		// Список всех предметов, по которым у студента есть лабораторные работы
		public static List<string> CourseList()
		{
			// Список с названиями предметов
			List<string> result = new List<string>();

			for ( int i = 0; i < Courses.Count; i++ )
			{
				// Добавляем название в список
				result.Add ( Courses [i].Name );
			}

			return result;
		}

		// Идентификатор студента в таблице
		public static string ID
		{
			get
			{
				return ID_stud;
			}
		}

		// ID группы, которой учится студент
		public static string Groups
		{
			get
			{
				return ID_group;
			}
		}

		// Номер выбранного предмета предмет
		public static int SelectCourse
		{
			get
			{
				return selectCourse;
			}
			set
			{
				selectCourse = value;
			}
		}

		// Выбранный предмет
		public static VisualTrain.Course LabCourse
		{
			get
			{
				return Courses [selectCourse];
			}
		}
	}
}

